import axios from "axios";
import {ElMessage} from "element-plus";

const instance = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API,
})


// 请求拦截器
instance.interceptors.request.use(
    config => {
        console.debug('request',config)
        return config
    },
    error => {
        return Promise.reject(error);
    }
)

// 响应拦截器
instance.interceptors.response.use(
    async response => {
        console.debug('request',response)
        const result = response.data;
        // 请求成功
        if (result.code === 200) {
            return result.data;
        }
        let msg = ''
        switch (result.code) {
            case 401:
                msg = result.message || '未登录'
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 1000)
                break
            case 403:
                msg = result.message || '权限不足'
                ElMessage.error(msg)
                break
            case 404:
                msg = result.message || '请求地址错误'
                break
            case 500:
                msg = result.message || '服务器出现问题'
                break
            default:
                msg = result.message || '网络出现问题'
                break
        }
        ElMessage.error(msg)
        return Promise.reject(msg)
    },
    async error => {
        console.debug('error',error)
        let msg = '';
        let status = error.response.status
        switch (status) {
            case 401:
                msg = '未登录'
                setTimeout(() => {
                    window.location.href = "/login"
                }, 1000)
                break
            case 403:
                msg = '权限不足'
                break
            case 404:
                msg = '请求地址错误'
                break
            case 500:
                msg = '服务器出现问题'
                break
            default:
                msg = '网络出现问题'
                break
        }
        ElMessage.error(msg)
        return Promise.reject(msg)
    }
)

export default instance;
